دوره‌ای که می‌تونه مسیر شغلیت رو عوض کنه! دوره‌ای که می‌تونه مسیر شغلیت رو عوض کنه!
🎯 ثبت نام

درس هفدهم : آموزش مدیریت رویداد ( Event Hhanding ) در Spring

آموزش مفهوم Event Handling ( مدیریت رویدادها ) در Spring

در کلیه مراحل آموزشی قبلی Spring ، متوجه شدید که بخش اصلی یک برنامه Spring محتوی ApplicationContext است که چرخه حیات کامل Bean ها در برنامه کنترل می کند .
ApplicationContext ، رویدادهای مشخصی را در هنگام لود و فراخوانی Bean های برنامه اجرا می کند . برای مثال ، رویداد ContextStartedEvent هنگامی مه Context شروع به لود کرده ، اجرا شده و رویداد ContextStopedEvent در هنگام پایان لود شدن Context رخ می دهد .
مدیریت رویدادها ( Event Handling ) در ApplicationContext را اجرا کند ، هربار که کلاس ApplicationEvent به ApplicationContext ارسال شود ، شی Bean از این عمل مطلع خواهد شد .
Spring شامل رویدادهای استاندارد زیر می باشد که به تشریح هر یک خواهیم پرداخت :


  • ContextResfreshed : این رویداد زمانی مه محتوی ApplicatinContext Event مقدار دهی اولیه ( initialized ) یا تازه ( Refresh ) می شود ، رخ می دهد . همچنین این رویداد را می توان با استفاده از متد refresh() رابط کاربری ApplicationContext اجرا نمود .
  • ContextStoppedEvent این رویداد زمانی که اجرا ApplicatinContext به استفاده از متد stop() رابط کاربری Configurable متوقف می شود ، رخ میدهد .

پس از متد ، می توانید کارهای مربوط به نگهداری و یهینه سازی سیستم را انجام دهید.


  • ContextClosedEvent : این رویداد زمانی رخ می دهد که ApplicationContext با استفاده از متد Closed() رابط کاربری Con بسته می شوید . context ای که بسته شود ، به انتهای چرخه حیات کاری خود خواهد رسید . این Context دیگر نمی تواند لود مجدد ( Refreshed ) یا شروع مجدد ( restart ) شود .
  • RequestHandledEvent : این رویداد یک event مختص فضای وب بوده و به کلیه Bean های برنامه اعلام می کند که به یک درخواست HTTP سرویس .
نکته:

مدیریت رویدادها در Spring ، یک پروسه تک عملیات (single thread ) است . بنابراین زمانی که یک رویدا اجرا می شود ، تا زمانی که کلیه گیرنده های آن رویداد پیام خود را دریافت کرده و به طور کامل اجرا شود ، سایر پروسه های برنامه متوقف شده و روال برنامه stop می شود .



گوش دادن به رویدادهای Context

برای گوش دادن به یک رویداد Context ، هر Bean بایستی رابط کاربری ApplicationListener را که فقط دارای یک متد به نام onApplicationEvent() را اجرا کند .
برای درک بهتر مطالب ارایه شده ، مثال عملی را مطرح می کنیم تا ببینیم رویدادها ( events ) چگونه منتشر شده و شما چگونه می توانید کدهای خود را طوری بنویسید تا اجرای آنها بسته به رخ دادن event ها باشند .
مثال عملی را با طی مراحل زیر در محیط Eclipse طراحی می کنیم :


  1. یک پروژه جدید به نام SpringExample و یک پکیج جدید را به نام com.tahlildadeh را در پوشه src برنامه ایجاد کنید .
  2. همانطور که در بخش نوشتن اولین برنامه با Spring آموزش دادیم ، کتابخانه های لازم برنامه را با استفاده از Extered JARs به پروژه اضافه کنید .
  3. کلاس های HelloWorld ، CStartEvantHandler ، CStopEventHandler و MainApp را در پکیج com.tahlildadeh ایجاد کنید .
  4. در پوشه src پروژه ، فایل پیکربندی اطلاعات Beans.xml را ایجاد کنید .
  5. مرحله آخر ایجاد محتوای کلیه فایل های جاوا پروژه و همچنین فایل پیکربندی اطلاعات Beans ها می باشد که در مراحل زیر توضیح داده شده است .

کد زیر را در فایل Hello.World.java قرار دهید :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.tutorialspoint;
 
  
 
public class HelloWorld {
 
   private String message;
 
  
 
   public void setMessage(String message){
 
      this.message  = message;
 
   }
 
  
 
   public void getMessage(){
 
      System.out.println("Your Message : " + message);
 
   }
 
}
<button></button>

همچنین محتوای فایل CStartEventHandler.java به صورت زیر است :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.tutorialspoint;
 
  
 
import org.springframework.context.ApplicationListener;
 
import org.springframework.context.event.ContextStartedEvent;
 
  
 
public class CStartEventHandler
 
   implements ApplicationListener<contextstartedevent>{
 
  
 
   public void onApplicationEvent(ContextStartedEvent event) {
 
      System.out.println("ContextStartedEvent Received");
 
   }
 
}
 
</contextstartedevent><button></button>

کد زیر نیز مربوط به فایل CStopEventHandler.java است :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.tutorialspoint;
 
  
 
import org.springframework.context.ApplicationListener;
 
import org.springframework.context.event.ContextStoppedEvent;
 
  
 
public class CStopEventHandler
 
   implements ApplicationListener<contextstoppedevent>{
 
  
 
   public void onApplicationEvent(ContextStoppedEvent event) {
 
      System.out.println("ContextStoppedEvent Received");
 
   }
 
}
 
</contextstoppedevent><button></button>

محتویات فایل اصلی برنامه MainApp.java به این صورت است :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.tutorialspoint;
 
  
 
import org.springframework.context.ConfigurableApplicationContext;
 
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
  
 
public class MainApp {
 
   public static void main(String[] args) {
 
      ConfigurableApplicationContext context =
 
      new ClassPathXmlApplicationContext("Beans.xml");
 
  
 
      // Let us raise a start event.
 
      context.start();
 
            
 
      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
 
  
 
      obj.getMessage();
 
  
 
      // Let us raise a stop event.
 
      context.stop();
 
   }
 
}
 
<button></button>

در نهایت نیز ، کد فایل پیکربندی اطلاعات برنامه Bean.xml به صورت زیر تعریف می شود :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
xml version="1.0" encoding="UTF-8"?>
 
  
 
 
 
    xsi:schemaLocation="http://www.springframework.org/schema/beans
 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 
  
 
    id="helloWorld" class="com.tutorialspoint.HelloWorld">
 
       name="message" value="Hello World!"/>
 
    
 
  
 
    id="cStartEventHandler"
 
         class="com.tutorialspoint.CStartEventHandler"/>
 
  
 
    id="cStopEventHandler"
 
         class="com.tutorialspoint.CStopEventHandler"/><button></button>

پس از اینکه فایل های برنامه را ایجاد کردیم ، می توانیم آن را اجرا کنیم . در صورت درست بودن همه موارد ، خروجی زیر تولید خواهد شد ،


1
2
3
4
5
6
7
ContextStartedEvent Received
 
Your Message : Hello World!
 
ContextStoppedEvent Received
 
<button></button>

در آخر هم اگر دوست داشتید ، می توانید رویدادهای دلخواه خود را نوشته و عملکرد آنها را در برنامه تست کنید .
برای نوشتن رویدادهای دلخواه خود ، به درس آموزش نوشتن Custom Events بروید .


Visit W3Schools.com!
1
<a href="http://www.tahlildadeh.com/">Visit W3Schools.com!</a><button></button>
1395/05/28 3244 1346
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...